Skip to main content

Webpack configuration

Certainly! To create a custom Webpack configuration in Docusaurus, you can extend the default configuration provided by Docusaurus. This allows you to include additional directories or modify the build process as needed.

Step 1: Create a Custom Webpack Configuration

  1. Create a New File: In your Docusaurus project root, create a file named docusaurus.config.js if it doesn't already exist. This file is where you'll define your custom Webpack configuration.

  2. Modify the Webpack Configuration: Add the following code to docusaurus.config.js to extend the Webpack configuration.

const path = require('path');

module.exports = {
// Other Docusaurus configuration options...

presets: [
[
'@docusaurus/preset-classic',
{
docs: {
// Your docs configurations...
},
blog: {
// Your blog configurations...
},
},
],
],

// Custom Webpack configuration
webpack: (config, isServer) => {
// Add a rule to include your custom directory
config.module.rules.push({
test: /\.(png|jpe?g|gif|svg)$/i,
use: [
{
loader: 'file-loader',
options: {
name: '[path][name].[ext]',
context: path.resolve(__dirname, 'your/custom/directory'), // Adjust the path
outputPath: 'img/', // Where to output the files
publicPath: '/img/', // Public path in the browser
},
},
],
});

return config;
},
};

Step 2: Explanation of the Configuration

  • Webpack Function: The webpack property is a function that allows you to modify the default Webpack configuration.

  • Custom Rule: In the example, we add a custom rule using file-loader to handle image files (like PNG, JPEG, GIF, and SVG) located in your/custom/directory. Adjust this path to the actual directory where your icons are stored.

  • Options:

    • name: Defines the naming convention for the output files.
    • context: The base directory for resolving the paths of the files.
    • outputPath: Specifies where to put the processed files in the output directory.
    • publicPath: Defines the path to access the files in the browser.

Step 3: Use Your Icons

After configuring Webpack, you can reference your icons in sidebars.js or any other part of your Docusaurus site like this:

icon: 'img/my-icon.svg', // Path relative to the output path defined in the Webpack config

Step 4: Build and Serve

Run your Docusaurus site to see the changes:

npm run start

or

yarn start

Conclusion

This custom Webpack configuration allows you to include files from a directory outside the static folder. By following these steps, you can effectively manage assets stored in custom locations within your Docusaurus project. Adjust the paths and options according to your project structure and requirements.